//#pragma once
#ifndef __AXP173_H__
#define __AXP173_H__

#include "../../main/usercfg.h"

typedef enum
{                 //可调电压输出通道（ldo1为RTC电源，电压不可调）
    OP_DCDC1 = 0, // 0
    OP_LDO4,      // 1
    OP_LDO2,      // 2
    OP_LDO3,      // 3
    OP_DCDC2,     // 4
} OUTPUT_CHANNEL;

typedef enum
{               // ADC采集电压与电流参数 （ADC使能地址：0x82;默认值：0x83）
    ADC_TS = 0, //温敏电阻管脚ADC
    ADC_APS_V,  // APS电压
    ADC_VBUS_C, //直流输入电流
    ADC_VBUS_V, //直流输入电压
    ADC_ACIN_C, //交流输入电流
    ADC_ACIN_V, //交流输入电压
    ADC_BAT_C,  //电池输入电流
    ADC_BAT_V,  //电池输入电压
} ADC_CHANNEL;

typedef enum
{                  //电池充电电流设置 （地址：0x33;初值：0xC8）
    CHG_100mA = 0, // 0000
    CHG_190mA,     // 0001
    CHG_280mA,     // 0010
    CHG_360mA,     // 0011
    CHG_450mA,     // 0100
    CHG_550mA,     // 0101
    CHG_630mA,     // 0110
    CHG_700mA,     // 0111
    CHG_780mA,     // 1000
    CHG_880mA,     // 1001
    CHG_960mA,     // 1010
    CHG_1000mA,    // 1011
    CHG_1080mA,    // 1100
    CHG_1160mA,    // 1101
    CHG_1240mA,    // 1110
    CHG_1320mA,    // 1111
} CHARGE_CURRENT;

typedef enum
{ //库仑计控制 （地址：0xB8;默认值：0x00）
    COULOMETER_RESET = 5,
    COULOMETER_PAUSE,
    COULOMETER_ENABLE,
} COULOMETER_CTRL;

typedef enum
{                    //关机时长设置 （地址：0x36;默认值【只操作最后两位】：0x5D）
    POWEROFF_4S = 0, // 00
    POWEROFF_6S,     // 01
    POWEROFF_8S,     // 10
    POWEROFF_10S,    // 11
} POWEROFF_TIME;

typedef enum
{                      //开机时长设置
    POWERON_128mS = 0, // 00
    POWERON_512mS,     // 01
    POWERON_1S,        // 10
    POWERON_2S,        // 11
} POWERON_TIME;

typedef enum
{                  //长按键PEK多长时间触发开关机事件（地址：0x36）
    LPRESS_1S = 0, // 00
    LPRESS_1_5S,   // 01
    LPRESS_2S,     // 10
    LPRESS_2_5S,   // 11
} LONG_PRESS_TIME;


#define axp173_reg_pwrout    0x12
#define axp173_reg_dcdc2_vol 0x23
#define axp173_reg_dcdc1_vol 0x26
#define axp173_reg_ldo2_vol  0x28
#define axp173_reg_ldo3_vol  0x28
#define axp173_reg_ldo4_vol  0x27

void axp173_init(void);
float axp173_getBatVoltage(void);
float axp173_getAXP173Temp(void);
float axp173_getBatLevel(void);
#endif // !__AXP173_H__

